﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Data.OracleClient;
using System.Text;
using System.Data;
using bi4homev3.Entidades;

namespace bi4homev3.Acceso_a_Datos
{
    #region Clase concreta de operaciones y acceso a BD con Oracle de Compras
    public class OracleCompraDAO : CompraDAO
    {
        public OracleCompraDAO()
        { 

        }

        //Procedimiento de insertar factura
        public void insertarFactura(Compra userCompra)
        {
            #region creacion de objetos DAOy comandos de BD
            OracleConnection conexion = FabricaOracleDAO.Crear();
            OracleCommand comando = new OracleCommand("APLICACION.AGREGARCOMPRA", conexion);
            #endregion
            #region Establecimiento de tipo de comando y creacion de parametros
            comando.CommandType = CommandType.StoredProcedure;
            comando.Parameters.Add(new OracleParameter("factura", OracleType.Number, 30));
            comando.Parameters.Add(new OracleParameter("fecha", OracleType.VarChar, 20));
            comando.Parameters.Add(new OracleParameter("monto", OracleType.Number, 20));
            comando.Parameters.Add(new OracleParameter("iva", OracleType.Number, 20));
            comando.Parameters.Add(new OracleParameter("login", OracleType.VarChar, 20));
            comando.Parameters.Add(new OracleParameter("locales", OracleType.Number, 20));
            #endregion
            #region Asignacion de valores aparametros
            comando.Parameters["factura"].Value = userCompra.Numfactura;
            comando.Parameters["fecha"].Value = userCompra.Fecha;
            comando.Parameters["monto"].Value = userCompra.Montototal;
            comando.Parameters["iva"].Value = userCompra.Iva;
            comando.Parameters["login"].Value = userCompra.Usuario;
            comando.Parameters["locales"].Value = userCompra.Local;
            #endregion

            //ejecucion
            comando.ExecuteScalar();
            FabricaOracleDAO.cerrarConexion();
        }
        public void insertardetalleFactura(Detalle detalleCompra)
        {
            #region creacion de objetos DAOy comandos de BD
            OracleConnection conexion = FabricaOracleDAO.Crear();
            OracleCommand comando = new OracleCommand("APLICACION.AGREGARDETALLECOMPRA", conexion);
            #endregion
            #region Establecimiento de tipo de comando y creacion de parametros
            comando.CommandType = CommandType.StoredProcedure;
            comando.Parameters.Add(new OracleParameter("producto", OracleType.Number, 30));
            comando.Parameters.Add(new OracleParameter("cantidad", OracleType.Number, 20));
            comando.Parameters.Add(new OracleParameter("preciounitario", OracleType.Number, 20));
            comando.Parameters.Add(new OracleParameter("login", OracleType.VarChar, 20));
            comando.Parameters.Add(new OracleParameter("factura", OracleType.Number, 20));
            #endregion
            #region Asignacion de valores aparametros
            comando.Parameters["producto"].Value = detalleCompra.Producto;
            comando.Parameters["cantidad"].Value = detalleCompra.Cantidad;
            comando.Parameters["preciounitario"].Value = detalleCompra.Preciounitario;
            comando.Parameters["login"].Value = detalleCompra.User;
            comando.Parameters["factura"].Value = detalleCompra.Factura;
            #endregion
            //Ejecucion y cierre de conexion
            comando.ExecuteScalar();
            FabricaOracleDAO.cerrarConexion();
        }
    }
    #endregion
}
